1. Field of the Invention
This invention relates to control devices for computer applications, and more particularly, to the auto-calibration of such devices.
2. Description of the Related Art
The advent of improved computer games has spawned a revolution in the computer gaming industry. Many new games are developed each year that take advantage of the latest technology advancements. These new games typically allow the user to control the position of an object (e.g., aircraft, gun, robot) in a three-dimensional space which is presented as a video image on a visual display. In some games, the user may also control the angular orientation of the object in the three-dimensional space.
To fully enjoy these new games, sophisticated control devices with six-degrees-of-freedom (e.g., three for linear displacement, three for rotations) were developed. These control devices assist the user in performing 360.degree. combination maneuvers, such as flips and spins, without the user touching the keyboard or game controller buttons, or spinning a "spinner" knob. One example of an advanced control device is the CYBERMAN 2, developed by Logitech Inc. of Fremont, Calif. This control device has a spring type mechanical attachment to a base that, when combined with digital technology, allows a user to move realistically in all directions in gaming and virtual reality environments.
One problem with conventional control devices, particularly joysticks, is their need to be calibrated. Control devices must be calibrated because the actual limits on the axis ranges of each control device can vary from their theoretical values, even along the same control device product line. Moreover, control devices typically need to be re-calibrated after or during each use to account for calibration drift caused by users who place vigorous physical demands on their control devices.
For example, in a two-dimensional application environment, a properly calibrated control device in its mechanically "neutral" position (i.e., non-deflected) ideally should report center axis values of (0,0). Having properly calibrated center axis values is important when object position reports are relative to the center axis. Similarly, the minimum and maximum axis values ideally should report values that reflect a one-to-one correspondence between the mechanical boundaries of the control device and the visual boundaries of the application environment.
For an uncalibrated control device, however, the center coordinate values are not correctly reported, and problems such as "ghosting" can occur (i.e., the application object moves in the application environment on a computer screen even when the user has not initiated any input).
To combat the calibration problem, some conventional control devices include mechanical wheels attached to potentiometers to adjust the electrical signals generated in response to mechanical movements or to adjust spring tensions in spring-loaded systems. These mechanically calibrated control devices are not always effective in complex spring-loaded systems because such systems have too many springs. Moreover, the additional hardware components makes these devices too expensive to manufacture.
Alternatively, some conventional control devices rely on calibration software to calibrate the output of the control device. Such software typically requires the user to move the cursor within a calibration grid on the computer screen and to focus on particular calibration points. These calibration points are usually placed along the perimeter and at the center of the grid. The manual calibration software is undesirable because it allows human error to enter the calibration process, thereby diminishing the performance of the control device.
Accordingly, there is a need for a system that automatically calibrates control devices for computer applications. Such a system should continually adapt to input axis values from the control device while the device is being used. Such a system should also be compatible with a variety of control devices, applications, and operating systems.